package com.shuo.dsa.niuke;

/**
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有的奇数位于数组的前半部分，
 * 所有的偶数位于数组的后半部分，并保证奇数和奇数，偶数和偶数之间的相对位置不变
 */
public class ReOrderArray {
    /**
     * 冒泡法: 遇到偶数就往后丢 (前偶后奇则swap)
     */
    public void reOrderArray(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - i - 1; j++) {
                if (isEven(array[j]) && !isEven(array[j + 1]))
                    swap(array, j, j+1);
            }
        }
    }

    public boolean isEven(int value) {
        return (value & 1) == 0;
    }

    public void swap(int[] array, int index1, int index2) {
        int temp = array[index1];
        array[index1] = array[index2];
        array[index2] = temp;
    }
}
